iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
Modern Web

重新認識 FrontEnd系列 第 16

Day16:ES5 功能(上)

  • 分享至 

  • xImage
  •  

ES5 的功能

時隔多年,在 2009 年時總算推出了 ES5,經過多年的準備,ES5 也添加了許多的功能,讓我們來看一下有哪些功能吧

  1. strict mode:在 ES5 中引入了嚴格模式,它可以幫忙檢查是否有重複的變數宣告、消除默認的 this 綁定,旨在讓開發者的代碼更加嚴謹
  2. 字串相關:在 ES5 時我們可以透過在字串中添加反引號來進行換行的宣告字串,不用透過加號來連結,以及可以透過 chatAt(index) 來輸入在該字串的某位置字元,還有一個非常常用的函式 String.trim() 主要用途為清除字串前後的多餘空白,尤其在帳號驗證時非常常使用。
var stringTemplate = "ab\
c"; // abc

var str = "TEST";
str[1] // "E"

var str2 = " Empty String  ";
str2.trim() // "Empty String"
  1. 物件屬性可以使用保留字命名:在 ES5 之前無法在物件屬性使用保留字來命名,在 ES5 時移除此設定
  2. 逗號分行:在 ES5 後,才能在物件或陣列裡面使用逗號來進行排版
var obj = {
 a: 1,
 b: 2,
 c: 3
}
var arr = [
 1,
 2,
 3
]
  1. JSON 支援:在 ES5 添加了對於 JSON 格式的支援,像是著名的 JSON.parse 和 JSON.stringify 都是這時間的產物
  2. Function bind:在 ES3 時已經有 Function.cell 和 Function.apply 兩種設置內部 this 的方式,但在 ES5 時才提共 Function.bind 的方式來簡單的設定 this
var module = {
  x: 42,
  getX: function() {
    return this.x;
  }
};

var retrieveX = module.getX;
console.log(retrieveX()); // undefined,因為 this 是全局對象或未定義

var boundGetX = retrieveX.bind(module);
console.log(boundGetX()); // 42
  1. define object property:在 ES5 時開始可以針對 object 裡面的屬性建立屬性描述符
// Create an Object:
var person = {
  firstName: "John",
  lastName : "Doe",
  language : "NO", 
};

// Change a Property:
Object.defineProperty(person, "language", {
  value: "EN",
  writable : true, // 設定此屬性是否可以修改
  enumerable : true, // 控制對象屬性是否可枚舉,即是否可以在 for...in 循環或 Object.keys() 中被列舉出來
  configurable : true // 控制對象屬性是否可配置,即是否可以刪除該屬性或修改它的屬性描述符
});

8.Object Getter Setter:在 ES5 時推出了物件屬性的 getter 和 setter,透過此設定可以快速地設定和建立取出模板

var person = {
  firstName: 'John',
  lastName: 'Doe',
  
  // 定義 getter
  get fullName() {
    return this.firstName + " " + this.lastName;
  },
  
  // 定義 setter
  set fullName(value) {
    var parts = value.split(' ');
    this.firstName = parts[0];
    this.lastName = parts[1];
  }
};

// 使用 getter 獲取 fullName
console.log(person.fullName); // 輸出 "John Doe"

// 使用 setter 設置 fullName
person.fullName = 'Jane Smith';
console.log(person.firstName); // 輸出 "Jane"
console.log(person.lastName);  // 輸出 "Smith"
console.log(person.fullName);  // 輸出 "Jane Smith"
  1. 日期相關:在 ES5 時推出了 Date 的 now、toISOString、toJSON 屬性
var timestamp = Date.now();
console.log(timestamp); // 1692612485000(從 1970 年 1 月 1 日 00:00:00 UTC 到現在的毫秒數)

var now = new Date();
var isoString = now.toISOString();
console.log(isoString); // 2024-08-21T12:34:56.789Z

var jsonString = now.toJSON();
console.log(jsonString); // 例如:2024-08-21T12:34:56.789Z

上一篇
Day15:那些年的 ECMAScript(ES1 ~ ES4)
下一篇
Day17:ES5(下)
系列文
重新認識 FrontEnd30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言